Imports System.Collections.Generic

Public Class GestorBuscarDatos
    Public Function buscarDatos(ByVal strTabla As String, ByVal objTipoObjeto As Type, Optional ByVal strFiltro As String = "") As List(Of Object)
        Dim objDataAccess As laboratorio_Datos.DataAccess = New laboratorio_Datos.DataAccess
        Dim objDataReader As System.Data.OleDb.OleDbDataReader

        If strFiltro = "" Then
            objDataReader = objDataAccess.getDataReader("SELECT * FROM " & strTabla)
        Else
            objDataReader = objDataAccess.getDataReader("SELECT * FROM " & strTabla & " WHERE " & strFiltro)
        End If


        Dim objTipo As String
        Dim objListaGenerica As List(Of Object)
        objTipo = objTipoObjeto.ToString

        Select Case objTipo
            Case "Laboratorio_Negocio.CapaDeNegocio.TipoDocumento"
                Dim objTipoDoc As Laboratorio_Negocio.CapaDeNegocio.TipoDocumento
                Dim objListaTipoDoc As List(Of Laboratorio_Negocio.CapaDeNegocio.TipoDocumento) = New List(Of Laboratorio_Negocio.CapaDeNegocio.TipoDocumento)
                objListaGenerica = New List(Of Object)
                While objDataReader.Read
                    objTipoDoc = New Laboratorio_Negocio.CapaDeNegocio.TipoDocumento
                    objTipoDoc.idTipoDoc = objDataReader.Item(0).ToString
                    objTipoDoc.descripcion = objDataReader.Item(1).ToString
                    objListaGenerica.Add(CType(objTipoDoc, Object))
                End While
            Case "Laboratorio_Negocio.CapaDeNegocio.PlanProtocolo"
                Dim objPlanProtocolo As Laboratorio_Negocio.CapaDeNegocio.PlanProtocolo
                Dim objListaProtocolo As List(Of Laboratorio_Negocio.CapaDeNegocio.PlanProtocolo) = New List(Of Laboratorio_Negocio.CapaDeNegocio.PlanProtocolo)
                objListaGenerica = New List(Of Object)
                While objDataReader.Read
                    objPlanProtocolo = New Laboratorio_Negocio.CapaDeNegocio.PlanProtocolo
                    With objPlanProtocolo
                        .idProtocolo = objDataReader!ID_PROTOCOLO.ToString
                        .codigo = objDataReader!CODIGO.ToString
                        .objetivo = objDataReader!OBJETIVO.ToString
                        .patologia = objDataReader!PATOLOGIA.ToString
                        .fechaAprobacion = CType(objDataReader!FECHA_APROBACION, Date)
                        .FechaInicio = CType(objDataReader!FECHA_INICIO, Date)
                        .FechaElevacionInformes = CType(objDataReader!FECHA_ELEV_INFORMES, Date)
                        .CantidadWeeks = CType(objDataReader!CANTIDAD_WEEKS, Integer)
                        .cantidadPaciente = CType(objDataReader!CANTIDAD_PACIENTES, Integer)
                        .NumMaxPacientes = CType(objDataReader!NUM_MAX_PACIENTES, Integer)
                        .NumMinPacientes = CType(objDataReader!NUM_MIN_PACIENTES, Integer)
                        .IntervaloContencion = CType(objDataReader!INTERVALO_CONTENCION, Integer)
                        .Medicamento = objDataReader!MEDICAMENTO.ToString
                        objListaGenerica.Add(CType(objPlanProtocolo, Object))
                    End With
                End While
            Case "Laboratorio_Negocio.CapaDeNegocio.Etapa"
                Dim objEtapa As Laboratorio_Negocio.CapaDeNegocio.Etapa
                Dim objListaEtapa As List(Of Laboratorio_Negocio.CapaDeNegocio.Etapa) = New List(Of Laboratorio_Negocio.CapaDeNegocio.Etapa)
                objListaGenerica = New List(Of Object)
                While objDataReader.Read
                    objEtapa = New Laboratorio_Negocio.CapaDeNegocio.Etapa
                    With objEtapa
                        .idetapa = objDataReader!ID_ETAPA.ToString
                        .descripcion = objDataReader!DESCRIPCION.ToString
                        .fechaInicio = CType(objDataReader!FECHA_INICIO, Date)
                        .fechaFin = CType(objDataReader!FECHA_FIN, Date)
                        .ordenEjecucion = CType(objDataReader!ORDEN_EJECUCION, Integer)
                        objListaGenerica.Add(CType(objEtapa, Object))
                    End With
                End While
            Case Else
                objListaGenerica = Nothing
        End Select

        objDataAccess.CloseConnection()

        Return objListaGenerica

    End Function

    Public Function getFiltros() As List(Of Laboratorio_Negocio.Filtros)
        Dim objDataAccess As laboratorio_Datos.DataAccess = New laboratorio_Datos.DataAccess
        Dim objDataReader As OleDb.OleDbDataReader
        objDataReader = objDataAccess.getDataReader("SELECT id_filtro,nombre FROM LABT_FILTROS")

        Dim objListaFiltro As List(Of Laboratorio_Negocio.Filtros) = New List(Of Laboratorio_Negocio.Filtros)
        Dim objFiltro As Laboratorio_Negocio.Filtros
        While objDataReader.Read
            objFiltro = New Laboratorio_Negocio.Filtros
            objFiltro.idFiltro = objDataReader.Item(0).ToString
            objFiltro.nombre = objDataReader.Item(1).ToString
            objListaFiltro.Add(objFiltro)
        End While

        objDataAccess.CloseConnection()

        Return objListaFiltro
    End Function

    Public Function getCampos(ByVal strTabla As String) As String()
        Dim objDataAccess As laboratorio_Datos.DataAccess = New laboratorio_Datos.DataAccess
        Dim objDataReader As OleDb.OleDbDataReader
        objDataReader = objDataAccess.getDataReader("SELECT nombre_columna FROM LABV_TABLAS_COLUMNAS WHERE nombre_tabla='" & strTabla & "'")

        Dim i As Integer
        i = 0
        Dim strMatriz() As String = New String() {}
        ReDim strMatriz(100)
        While objDataReader.Read
            strMatriz(i) = Trim(objDataReader.Item(0).ToString)
            i = i + 1
        End While

        objDataAccess.CloseConnection()

        Return strMatriz
    End Function

    Public Function setearOrigen(ByVal strId As String, ByVal strTabla As String, ByVal strTipo As Type, ByVal objOrigen As Object) As Object
        Dim objDataAccess As laboratorio_Datos.DataAccess = New laboratorio_Datos.DataAccess
        Dim objDataReader As System.Data.OleDb.OleDbDataReader
        
    End Function
End Class
